package main

import "fmt"

// 函数传指针参数
func fn1(a *int) {
	*a = 40
}

func main() {
	var a int = 10
	fmt.Printf("值: %v 类型:%T 地址：%p\n", a, a, &a)

	var p = &a
	fmt.Printf("值: %v 类型:%T 地址：%p 指针的值: %v\n", p, p, &p, *p) // 值: 0xc00000a0a8 类型:*int 地址：0xc000050028 指针的值: 10
	a = 12
	fmt.Printf("值: %v 类型:%T 地址：%p 指针的值: %v\n", p, p, &p, *p) //值: 0xc00000a0a8 类型:*int 地址：0xc000050028 指针的值: 12
	fn1(&a)
	fmt.Println(a) //40

	// new
	var b = new(int)
	fmt.Printf("值: %v 类型:%T 地址：%p 指针的值: %v\n", b, b, &b, *b) //值: 0xc00000a0f0 类型:*int 地址：0xc000050030 指针的值: 0
}
